package com.briup.es.config.response;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;

/**
 * 通过枚举类，维护一个统一的响应；
 * 即统一维护响应状态码和响应消息的关系
 */
@Getter
// 创建一个私有的构造器
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public enum ResultCode {
    // 统一指定成功的响应
    SUCCESS(200,"ok"),

    // 认证失败响应
    USER_IS_EXISTS(10000,"该用户名已存在"),
    USER_IS_NOT_EXISTS(10001,"该用户名不存在"),
    PASSWORD_IS_ERROR(10002,"您输入的密码有误，请重新输入"),
    ACCOUNT_IS_UNABLE(10003,"您的账号被禁用，请联系管理员处理！"),
    TOKEN_IS_MISSING(10004,"您还未登录，请前往登录"),
    TOKEN_IS_TIMEOUT(10005,"您的登录已过期，请重新登录"),
    TOKEN_IS_INVALID(10006,"您的登录状态有误，请重新登录"),
    OLD_PASSWORD_IS_ERROR(10007,"您输入的原始密码有误，检查后继续修改密码"),

    // 参数异常失败响应
    PARAMS_IS_INVALID(20000,"您输入的参数有误，请检查后重新输入"),

    // 地址相关的失败响应
    ADDRESS_IS_NOT_FOUND(30000,"该地址不属于当前用户"),

    // 图书相关的失败响应
    BOOK_IS_NOT_EXISTS(40000,"该图书商品不存在或已下架"),
    BOOK_STORE_NUM_IS_NULL(40001,"该图书库存不足，等待商家补充货源"),

    // 购物车相关的失败响应
    SHOPCAR_ITEM_IS_ERROR(50000,"该购物车项不存在，请确认商品是否移出购物车"),
    SHOPCAR_ITEM_NUM_IS_ERROR(50001,"购物车项数量不一致，生成订单失败"),

    // 订单相关的失败响应
    ORDER_IS_NOT_EXISTS(60001,"该订单不存在"),
    ORDER_CAN_NOT_CLOSE(60002,"订单当前状态无法关闭"),
    ORDER_CAN_NOT_COMPLETE(60003,"订单当前状态无法确认收货"),
    ORDER_CAN_NOT_PAY(60004,"订单当前状态无法支付"),

    INNER_SERVER_FAIL(500,"服务器内部异常，请联系管理员");

    private final Integer code;
    private final String message;
}
